package cn.iocoder.yudao.module.system.dal.dataobject.userbehavior;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 用户功能路径 DO
 *
 * @author 系统开发团队
 */
@TableName("ai_user_feature_path")
@KeySequence("ai_user_feature_path_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserFeaturePathDO extends BaseDO {

    /**
     * 路径ID
     */
    @TableId
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 用户名
     */
    private String username;

    /**
     * 用户类型：1-管理员，2-普通用户
     */
    private Integer userType;

    /**
     * 会话ID
     */
    private String sessionId;

    /**
     * 功能路径序列（JSON数组格式）
     */
    private String featurePath;

    /**
     * 路径开始时间
     */
    private LocalDateTime pathStartTime;

    /**
     * 路径结束时间
     */
    private LocalDateTime pathEndTime;

    /**
     * 功能数量
     */
    private Integer featureCount;

    /**
     * 路径总时长（分钟）
     */
    private Integer pathDuration;

    /**
     * 路径完成状态：1-完成，2-未完成，3-中断
     */
    private Integer completionStatus;

    /**
     * 入口功能
     */
    private String entryFeature;

    /**
     * 出口功能
     */
    private String exitFeature;

    /**
     * 是否达成转化：1-是，0-否
     */
    private Boolean conversionAchieved;

    /**
     * 跳出率（百分比）
     */
    private BigDecimal bounceRate;

    /**
     * 参与度评分（1-10分）
     */
    private BigDecimal engagementScore;

    /**
     * 满意度评分（1-10分）
     */
    private BigDecimal satisfactionScore;

    /**
     * 设备类型：1-PC，2-移动端，3-Web
     */
    private Integer deviceType;

    /**
     * 浏览器类型
     */
    private String browserType;

    /**
     * 操作系统类型
     */
    private String osType;

    /**
     * IP地址
     */
    private String ipAddress;

    /**
     * 地区
     */
    private String region;

    /**
     * 城市
     */
    private String city;

    /**
     * 扩展信息（JSON格式）
     */
    private String extendInfo;

    // ========== 常量定义 ==========

    /**
     * 用户类型 - 管理员
     */
    public static final Integer USER_TYPE_ADMIN = 1;

    /**
     * 用户类型 - 普通用户
     */
    public static final Integer USER_TYPE_MEMBER = 2;

    /**
     * 完成状态 - 完成
     */
    public static final Integer COMPLETION_STATUS_COMPLETED = 1;

    /**
     * 完成状态 - 未完成
     */
    public static final Integer COMPLETION_STATUS_INCOMPLETE = 2;

    /**
     * 完成状态 - 中断
     */
    public static final Integer COMPLETION_STATUS_INTERRUPTED = 3;

    /**
     * 设备类型 - PC
     */
    public static final Integer DEVICE_TYPE_PC = 1;

    /**
     * 设备类型 - 移动端
     */
    public static final Integer DEVICE_TYPE_MOBILE = 2;

    /**
     * 设备类型 - Web
     */
    public static final Integer DEVICE_TYPE_WEB = 3;
}